package net.tv90.bfmccore.game;

import net.tv90.bfmccore.game.impl.*;
import net.tv90.bfmccore.game.impl.cq.*;
import net.tv90.bfmccore.util.area.Area;
import net.tv90.bfmccore.util.area.CircleArea;
import net.tv90.bfmccore.util.area.RectangleArea2i;
import net.tv90.bfmccore.util.area.RectangleArea3i;
import net.tv90.bfmccore.util.file.FileUtils;
import net.tv90.bfmccore.util.vector.Vector2i;
import net.tv90.bfmccore.util.vector.Vector3i;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static net.tv90.bfmccore.game.GameManager.*;
import static net.tv90.bfmccore.game.EnumGameType.*;

public class GameResource {
    /*

    static {
        TDMGame SIEGEOFSHANGHAI_TDM = new TDMGame();
        List<Vector3i> list_cn = FileUtils.readVector3iList("map/SiegeOfShanghaiTDM2.yml", "Point");
        List<Vector3i> list_us = FileUtils.readVector3iList("map/SiegeOfShanghaiTDM2.yml", "Point");
        SIEGEOFSHANGHAI_TDM.initGameSource(
                "SiegeOfShanghaiTDM2", "团队死斗", "CN", "US",
                new Vector3i(205, 31, 759),
                new Vector3i(205, 31, 754),
                new Vector3i(205, 31, 749),
                list_cn, list_us);
        SIEGEOFSHANGHAI_TDM.setTime(1200);
        SIEGEOFSHANGHAI_TDM.setTicket(100);
        SIEGEOFSHANGHAI_TDM.setMapName_Lang("上海之围2(Siege Of Shanghai 2)");
        SIEGEOFSHANGHAI_TDM.setGameType(TDM);

        gameList_1.add(SIEGEOFSHANGHAI_TDM);
        gameList_2.add(SIEGEOFSHANGHAI_TDM);
        gameList_3.add(SIEGEOFSHANGHAI_TDM);
    }

    static {
        ConquestGame OPERATIONMETRO_FL = new ConquestGame();
        // -2090 1249 / -1634 1479

        Area area_A = new RectangleArea3i(new Vector3i(-1984, 30, 1347), new Vector3i(-1954, 39, 1402));
        Area area_B = new RectangleArea3i(new Vector3i(-1854, 28, 1386), new Vector3i(-1831, 34, 1357));
        Area area_C = new RectangleArea3i(new Vector3i(-1772, 22, 1353), new Vector3i(-1739, 26, 1394));

        List<Vector3i> RU_List = new ArrayList<>(Arrays.asList(
                new Vector3i(-2064, 26, 1407), new Vector3i(-2073, 32, 1398), new Vector3i(-2086, 33, 1398),
                new Vector3i(-2067, 32, 1366), new Vector3i(-2090, 32, 1356), new Vector3i(-2074, 32, 1345)
        ));

        List<Vector3i> US_List = new ArrayList<>(Arrays.asList(
                new Vector3i(-1673, 22, 1378), new Vector3i(-1690, 22, 1368), new Vector3i(-1665, 22, 1363),
                new Vector3i(-1676, 22, 1396), new Vector3i(-1668, 23, 1370), new Vector3i(-1680, 22, 1342)
        ));

        List<Vector3i> List_A_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1957, 30, 1347), new Vector3i(-1957, 30, 1398), new Vector3i(-1944, 30, 1386),
                new Vector3i(-1939, 30, 1332), new Vector3i(-1957, 30, 1398), new Vector3i(-1944, 30, 1386)
        ));
        List<Vector3i> List_A_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1909, 30, 1339), new Vector3i(-1901, 30, 1368), new Vector3i(-1910, 30, 1389),
                new Vector3i(-1903, 30, 1401), new Vector3i(-1897, 30, 1393), new Vector3i(-1897, 30, 1393)
        ));
        List<Vector3i> List_A_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1972, 30, 1358), new Vector3i(-1962, 30, 1393), new Vector3i(-1980, 30, 1381),
                new Vector3i(-1975, 36, 1360), new Vector3i(-1962, 30, 1393), new Vector3i(-1980, 30, 1381)
        ));
        List<Vector3i> List_A_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1990, 25, 1347), new Vector3i(-1989, 25, 1360), new Vector3i(-1995, 25, 1387),
                new Vector3i(-1979, 30, 1431), new Vector3i(-1984, 26, 1306), new Vector3i(-1984, 26, 1306)
        ));

        List<Vector3i> List_B_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1837, 27, 1333), new Vector3i(-1834, 30, 1372), new Vector3i(-1833, 30, 1356),
                new Vector3i(-1834, 30, 1378), new Vector3i(-1834, 30, 1372), new Vector3i(-1833, 30, 1356)
        ));
        List<Vector3i> List_B_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1786, 23, 1342), new Vector3i(-1782, 23, 1365), new Vector3i(-1800, 23, 1381),
                new Vector3i(-1826, 22, 1394), new Vector3i(-1782, 23, 1365), new Vector3i(-1800, 23, 1381)
        ));
        List<Vector3i> List_B_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1844, 30, 1391), new Vector3i(-1844, 30, 1376), new Vector3i(-1832, 30, 1370),
                new Vector3i(-1847, 30, 1346), new Vector3i(-1847, 30, 1346), new Vector3i(-1847, 30, 1346)
        ));
        List<Vector3i> List_B_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1889, 30, 1330), new Vector3i(-1880, 30, 1417), new Vector3i(-1893, 30, 1384),
                new Vector3i(-1905, 30, 1335), new Vector3i(-1880, 30, 1417), new Vector3i(-1893, 30, 1384)
        ));

        List<Vector3i> List_C_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1748, 23, 1346), new Vector3i(-1732, 23, 1375), new Vector3i(-1755, 22, 1394),
                new Vector3i(-1762, 23, 1384), new Vector3i(-1732, 23, 1375), new Vector3i(-1755, 22, 1394)
        ));
        List<Vector3i> List_C_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1723, 23, 1380), new Vector3i(-1739, 23, 1336), new Vector3i(-1712, 22, 1350),
                new Vector3i(-1723, 23, 1380), new Vector3i(-1739, 23, 1336), new Vector3i(-1712, 22, 1350)
        ));
        List<Vector3i> List_C_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1775, 23, 1365), new Vector3i(-1780, 23, 1390), new Vector3i(-1779, 23, 1381),
                new Vector3i(-1774, 23, 1340), new Vector3i(-1780, 23, 1390), new Vector3i(-1779, 23, 1381)
        ));
        List<Vector3i> List_C_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1790, 23, 1389), new Vector3i(-1803, 23, 1381), new Vector3i(-1799, 23, 1369),
                new Vector3i(-1798, 23, 1382), new Vector3i(-1803, 23, 1381), new Vector3i(-1799, 23, 1369)
        ));

        FrontLineConquestArea point_RU = new FrontLineConquestArea(area_A, "HQ", "地铁俄军部署", false, RU_List, RU_List, RU_List, RU_List);
        FrontLineConquestArea point1 = new FrontLineConquestArea(area_A, "A", "咖啡馆", true, List_A_US, List_A_US_Capture, List_A_RU, List_A_RU_Capture);
        FrontLineConquestArea point2 = new FrontLineConquestArea(area_B, "B", "售票厅", true, List_B_US, List_B_US_Capture, List_B_RU, List_B_RU_Capture);
        FrontLineConquestArea point3 = new FrontLineConquestArea(area_C, "C", "平台", true, List_C_US, List_C_US_Capture, List_C_RU, List_C_RU_Capture);
        FrontLineConquestArea point_US = new FrontLineConquestArea(area_C, "HQ", "地铁美军部署", false, US_List, US_List, US_List, US_List);

        point1.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point2.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point3.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point_RU.setCaptureState("RU", ConquestArea.ConquestAreaState.CAPTURED);
        point_US.setCaptureState("US", ConquestArea.ConquestAreaState.CAPTURED);

        point1.setCaptureProperty(20, 3);
        point2.setCaptureProperty(20, 1);
        point3.setCaptureProperty(20, 3);
        point_RU.setCaptureProperty(20, 0);
        point_US.setCaptureProperty(20, 0);

        point1.setConquestAreaButtonPosition(410, 130, 20, 20);
        point2.setConquestAreaButtonPosition(410, 220, 20, 20);
        point3.setConquestAreaButtonPosition(410, 290, 20, 20);
        point_RU.setConquestAreaButtonPosition(410, 80, 20, 20);
        point_US.setConquestAreaButtonPosition(410, 340, 20, 20);

        List<ConquestArea> pointList = new ArrayList<>(Arrays.asList(
                point_RU, point1, point2, point3, point_US
        ));

        FrontLineConquestArea.toLinkedList(point_RU, point1, point2, point3, point_US);

        OPERATIONMETRO_FL.initGameSource(
                "OperationMetro", "前线征服", "US", "RU",
                new Vector3i(-1994, 4, 1422),
                new Vector3i(-2001, 4, 1421),
                new Vector3i(-1987, 4, 1421),
                pointList);
        OPERATIONMETRO_FL.setTime(1800);
        OPERATIONMETRO_FL.setTicket(1500);
        OPERATIONMETRO_FL.setMapName_Lang("地铁行动(Operation Metro)");
        OPERATIONMETRO_FL.setGameType(FRONTLINE);
        OPERATIONMETRO_FL.maxAi = 12;
        gameList_2.add(OPERATIONMETRO_FL);
        gameList_3.add(OPERATIONMETRO_FL);
        gameList_4.add(OPERATIONMETRO_FL);
    }

    static {
        ConquestGame OPERATIONMETRO_CQS = new ConquestGame();

        Area area_A = new RectangleArea3i(new Vector3i(-1885, 28, 1364), new Vector3i(-1902, 34, 1384));
        Area area_B = new RectangleArea3i(new Vector3i(-1854, 28, 1386), new Vector3i(-1831, 34, 1357));
        Area area_C = new RectangleArea3i(new Vector3i(-1776, 29, 1367), new Vector3i(-1788, 36, 1342));

        List<Vector3i> RU_List = new ArrayList<>(Arrays.asList(
                new Vector3i(-1933, 30, 1391), new Vector3i(-1936, 30, 1377), new Vector3i(-1933, 30, 1362),
                new Vector3i(-1933, 30, 1351), new Vector3i(-1925, 30, 1345)
        ));

        List<Vector3i> US_List = new ArrayList<>(Arrays.asList(
                new Vector3i(-1751, 23, 1380), new Vector3i(-1751, 23, 1368), new Vector3i(-1752, 23, 1383),
                new Vector3i(-1740, 23, 1378), new Vector3i(-1759, 22, 1353), new Vector3i(-1751, 23, 1335)
        ));

        List<Vector3i> List_A_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1896, 30, 1367), new Vector3i(-1890, 30, 1381),
                new Vector3i(-1875, 30, 1376), new Vector3i(-1868, 30, 1345)
        ));
        List<Vector3i> List_A_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1858, 30, 1400), new Vector3i(-1873, 30, 1402),
                new Vector3i(-1868, 30, 1343), new Vector3i(-1853, 30, 1360)
        ));
        List<Vector3i> List_A_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1896, 30, 1367), new Vector3i(-1890, 30, 1381),
                new Vector3i(-1902, 30, 1381), new Vector3i(-1905, 30, 1370)
        ));
        List<Vector3i> List_A_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1933, 30, 1391), new Vector3i(-1936, 30, 1377), new Vector3i(-1933, 30, 1362),
                new Vector3i(-1933, 30, 1351), new Vector3i(-1925, 30, 1345)
        ));

        List<Vector3i> List_B_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1837, 27, 1333), new Vector3i(-1834, 30, 1372), new Vector3i(-1833, 30, 1356),
                new Vector3i(-1834, 30, 1378), new Vector3i(-1834, 30, 1372), new Vector3i(-1833, 30, 1356)
        ));
        List<Vector3i> List_B_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1786, 23, 1342), new Vector3i(-1782, 23, 1365), new Vector3i(-1800, 23, 1381),
                new Vector3i(-1826, 22, 1394), new Vector3i(-1782, 23, 1365), new Vector3i(-1800, 23, 1381)
        ));
        List<Vector3i> List_B_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1844, 30, 1391), new Vector3i(-1844, 30, 1376), new Vector3i(-1832, 30, 1370),
                new Vector3i(-1847, 30, 1346), new Vector3i(-1847, 30, 1346), new Vector3i(-1847, 30, 1346)
        ));
        List<Vector3i> List_B_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1889, 30, 1330), new Vector3i(-1880, 30, 1417), new Vector3i(-1893, 30, 1384),
                new Vector3i(-1905, 30, 1335), new Vector3i(-1880, 30, 1417), new Vector3i(-1893, 30, 1384)
        ));

        List<Vector3i> List_C_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1777, 30, 1342), new Vector3i(-1787, 30, 1334), new Vector3i(-1778, 30, 1362),
                new Vector3i(-1787, 30, 1358), new Vector3i(-1782, 30, 1358)
        ));
        List<Vector3i> List_C_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1751, 23, 1380), new Vector3i(-1751, 23, 1368), new Vector3i(-1752, 23, 1383),
                new Vector3i(-1740, 23, 1378), new Vector3i(-1759, 22, 1353), new Vector3i(-1751, 23, 1335)
        ));
        List<Vector3i> List_C_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1777, 30, 1342), new Vector3i(-1787, 30, 1334), new Vector3i(-1778, 30, 1362),
                new Vector3i(-1787, 30, 1358), new Vector3i(-1782, 30, 1358)
        ));
        List<Vector3i> List_C_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1805, 23, 1381), new Vector3i(-1804, 23, 1374), new Vector3i(-1793, 23, 1350)
        ));

        ConquestArea point_RU = new ConquestArea(area_A, "HQ", "地铁俄军部署", false, RU_List, RU_List, RU_List, RU_List);
        ConquestArea point1 = new ConquestArea(area_A, "A", "售票厅", true, List_A_US, List_A_US_Capture, List_A_RU, List_A_RU_Capture);
        ConquestArea point2 = new ConquestArea(area_B, "B", "车站", true, List_B_US, List_B_US_Capture, List_B_RU, List_B_RU_Capture);
        ConquestArea point3 = new ConquestArea(area_C, "C", "平台", true, List_C_US, List_C_US_Capture, List_C_RU, List_C_RU_Capture);
        ConquestArea point_US = new ConquestArea(area_C, "HQ", "地铁美军部署", false, US_List, US_List, US_List, US_List);

        point1.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point2.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point3.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point_RU.setCaptureState("RU", ConquestArea.ConquestAreaState.CAPTURED);
        point_US.setCaptureState("US", ConquestArea.ConquestAreaState.CAPTURED);

        point1.setCaptureProperty(14, 3);
        point2.setCaptureProperty(18, 1);
        point3.setCaptureProperty(14, 3);
        point_RU.setCaptureProperty(20, 0);
        point_US.setCaptureProperty(20, 0);

        point1.setConquestAreaButtonPosition(410, 130, 20, 20);
        point2.setConquestAreaButtonPosition(410, 220, 20, 20);
        point3.setConquestAreaButtonPosition(410, 290, 20, 20);
        point_RU.setConquestAreaButtonPosition(410, 80, 20, 20);
        point_US.setConquestAreaButtonPosition(410, 340, 20, 20);

        List<ConquestArea> pointList = new ArrayList<>(Arrays.asList(
                point_RU, point1, point2, point3, point_US
        ));

        OPERATIONMETRO_CQS.initGameSource(
                "OperationMetroCQS", "小型征服", "US", "RU",
                new Vector3i(-1994, 4, 1422),
                new Vector3i(-2001, 4, 1421),
                new Vector3i(-1987, 4, 1421),
                pointList);
        OPERATIONMETRO_CQS.setTime(1500);
        OPERATIONMETRO_CQS.setTicket(1200);
        OPERATIONMETRO_CQS.setMapName_Lang("地铁行动(Operation Metro)");
        OPERATIONMETRO_CQS.setGameType(CONQUEST);
        OPERATIONMETRO_CQS.maxAi = 9;
        gameList_1.add(OPERATIONMETRO_CQS);
        gameList_2.add(OPERATIONMETRO_CQS);
        gameList_3.add(OPERATIONMETRO_CQS);
    }

    static {
        FrontLineGame OPERATIONMETRO_FLS = new FrontLineGame();

        Area area_A = new RectangleArea3i(new Vector3i(-1885, 28, 1364), new Vector3i(-1902, 34, 1384));
        Area area_B = new RectangleArea3i(new Vector3i(-1854, 28, 1386), new Vector3i(-1831, 34, 1357));
        Area area_C = new RectangleArea3i(new Vector3i(-1776, 29, 1367), new Vector3i(-1788, 36, 1342));

        List<Vector3i> RU_List = new ArrayList<>(Arrays.asList(
                new Vector3i(-1933, 30, 1391), new Vector3i(-1936, 30, 1377), new Vector3i(-1933, 30, 1362),
                new Vector3i(-1933, 30, 1351), new Vector3i(-1925, 30, 1345)
        ));

        List<Vector3i> US_List = new ArrayList<>(Arrays.asList(
                new Vector3i(-1751, 23, 1380), new Vector3i(-1751, 23, 1368), new Vector3i(-1752, 23, 1383),
                new Vector3i(-1740, 23, 1378), new Vector3i(-1759, 22, 1353), new Vector3i(-1751, 23, 1335)
        ));

        List<Vector3i> List_A_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1896, 30, 1367), new Vector3i(-1890, 30, 1381),
                new Vector3i(-1875, 30, 1376), new Vector3i(-1868, 30, 1345)
        ));
        List<Vector3i> List_A_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1858, 30, 1400), new Vector3i(-1873, 30, 1402),
                new Vector3i(-1868, 30, 1343), new Vector3i(-1853, 30, 1360)
        ));
        List<Vector3i> List_A_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1896, 30, 1367), new Vector3i(-1890, 30, 1381),
                new Vector3i(-1902, 30, 1381), new Vector3i(-1905, 30, 1370)
        ));
        List<Vector3i> List_A_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1933, 30, 1391), new Vector3i(-1936, 30, 1377), new Vector3i(-1933, 30, 1362),
                new Vector3i(-1933, 30, 1351), new Vector3i(-1925, 30, 1345)
        ));

        List<Vector3i> List_B_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1837, 27, 1333), new Vector3i(-1834, 30, 1372), new Vector3i(-1833, 30, 1356),
                new Vector3i(-1834, 30, 1378), new Vector3i(-1834, 30, 1372), new Vector3i(-1833, 30, 1356)
        ));
        List<Vector3i> List_B_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1786, 23, 1342), new Vector3i(-1782, 23, 1365), new Vector3i(-1800, 23, 1381),
                new Vector3i(-1826, 22, 1394), new Vector3i(-1782, 23, 1365), new Vector3i(-1800, 23, 1381)
        ));
        List<Vector3i> List_B_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1844, 30, 1391), new Vector3i(-1844, 30, 1376), new Vector3i(-1832, 30, 1370),
                new Vector3i(-1847, 30, 1346), new Vector3i(-1847, 30, 1346), new Vector3i(-1847, 30, 1346)
        ));
        List<Vector3i> List_B_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1889, 30, 1330), new Vector3i(-1880, 30, 1417), new Vector3i(-1893, 30, 1384),
                new Vector3i(-1905, 30, 1335), new Vector3i(-1880, 30, 1417), new Vector3i(-1893, 30, 1384)
        ));

        List<Vector3i> List_C_US = new ArrayList<>(Arrays.asList(
                new Vector3i(-1777, 30, 1342), new Vector3i(-1787, 30, 1334), new Vector3i(-1778, 30, 1362),
                new Vector3i(-1787, 30, 1358), new Vector3i(-1782, 30, 1358)
        ));
        List<Vector3i> List_C_US_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1751, 23, 1380), new Vector3i(-1751, 23, 1368), new Vector3i(-1752, 23, 1383),
                new Vector3i(-1740, 23, 1378), new Vector3i(-1759, 22, 1353), new Vector3i(-1751, 23, 1335)
        ));
        List<Vector3i> List_C_RU = new ArrayList<>(Arrays.asList(
                new Vector3i(-1777, 30, 1342), new Vector3i(-1787, 30, 1334), new Vector3i(-1778, 30, 1362),
                new Vector3i(-1787, 30, 1358), new Vector3i(-1782, 30, 1358)
        ));
        List<Vector3i> List_C_RU_Capture = new ArrayList<>(Arrays.asList(
                new Vector3i(-1805, 23, 1381), new Vector3i(-1804, 23, 1374), new Vector3i(-1793, 23, 1350)
        ));

        FrontLineConquestArea point_RU = new FrontLineConquestArea(area_A, "HQ", "地铁俄军部署", false, RU_List, RU_List, RU_List, RU_List);
        FrontLineConquestArea point1 = new FrontLineConquestArea(area_A, "A", "售票厅", true, List_A_US, List_A_US_Capture, List_A_RU, List_A_RU_Capture);
        FrontLineConquestArea point2 = new FrontLineConquestArea(area_B, "B", "车站", true, List_B_US, List_B_US_Capture, List_B_RU, List_B_RU_Capture);
        FrontLineConquestArea point3 = new FrontLineConquestArea(area_C, "C", "平台", true, List_C_US, List_C_US_Capture, List_C_RU, List_C_RU_Capture);
        FrontLineConquestArea point_US = new FrontLineConquestArea(area_C, "HQ", "地铁美军部署", false, US_List, US_List, US_List, US_List);

        point1.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point2.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point3.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point_RU.setCaptureState("RU", ConquestArea.ConquestAreaState.CAPTURED);
        point_US.setCaptureState("US", ConquestArea.ConquestAreaState.CAPTURED);

        point1.setCaptureProperty(14, 3);
        point2.setCaptureProperty(18, 1);
        point3.setCaptureProperty(14, 3);
        point_RU.setCaptureProperty(20, 0);
        point_US.setCaptureProperty(20, 0);

        point1.setConquestAreaButtonPosition(410, 130, 20, 20);
        point2.setConquestAreaButtonPosition(410, 220, 20, 20);
        point3.setConquestAreaButtonPosition(410, 290, 20, 20);
        point_RU.setConquestAreaButtonPosition(410, 80, 20, 20);
        point_US.setConquestAreaButtonPosition(410, 340, 20, 20);

        List<ConquestArea> pointList = new ArrayList<>(Arrays.asList(
                point_RU, point1, point2, point3, point_US
        ));

        FrontLineConquestArea.toLinkedList(point_RU, point1, point2, point3, point_US);

        OPERATIONMETRO_FLS.initGameSource(
                "OperationMetroCQS", "小型前线征服", "US", "RU",
                new Vector3i(-1994, 4, 1422),
                new Vector3i(-2001, 4, 1421),
                new Vector3i(-1987, 4, 1421),
                pointList);
        OPERATIONMETRO_FLS.setTime(1500);
        OPERATIONMETRO_FLS.setTicket(1200);
        OPERATIONMETRO_FLS.setMapName_Lang("地铁行动(Operation Metro)");
        OPERATIONMETRO_FLS.setGameType(FRONTLINE);
        OPERATIONMETRO_FLS.maxAi = 9;
        gameList_1.add(OPERATIONMETRO_FLS);
        gameList_2.add(OPERATIONMETRO_FLS);
        gameList_3.add(OPERATIONMETRO_FLS);
    }

    static {
        VehicleStormGame CASPIANBORDER_VS = new VehicleStormGame();

        Area area_A = new RectangleArea3i(new Vector3i(1171, 4, 28), new Vector3i(1113, 10, 97));
        Area area_B = new RectangleArea3i(new Vector3i(1058, 16, 157), new Vector3i(1025, 25, 117));
        Area area_C = new CircleArea(new Vector2i(976, 92), 10, 2, 8);
        Area area_D = new RectangleArea3i(new Vector3i(891, 4, 175), new Vector3i(844, 10, 253));
        Area area_E = new RectangleArea3i(new Vector3i(896, 3, -61), new Vector3i(864, 10, -5));

        List<Vector3i> RU_List = FileUtils.readVector3iList("map/CaspianBorder.yml", "RU");
        List<Vector3i> US_List = FileUtils.readVector3iList("map/CaspianBorder.yml", "US");
        List<Vector3i> List_A_US = FileUtils.readVector3iList("map/CaspianBorder.yml", "A_US");
        List<Vector3i> List_A_US_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "A_US_Capture");
        List<Vector3i> List_A_RU = FileUtils.readVector3iList("map/CaspianBorder.yml", "A_RU");
        List<Vector3i> List_A_RU_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "A_RU_Capture");
        List<Vector3i> List_B_US = FileUtils.readVector3iList("map/CaspianBorder.yml", "B_US");
        List<Vector3i> List_B_US_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "B_US_Capture");
        List<Vector3i> List_B_RU = FileUtils.readVector3iList("map/CaspianBorder.yml", "B_RU");
        List<Vector3i> List_B_RU_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "B_RU_Capture");
        List<Vector3i> List_C_US = FileUtils.readVector3iList("map/CaspianBorder.yml", "C_US");
        List<Vector3i> List_C_US_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "C_US_Capture");
        List<Vector3i> List_C_RU = FileUtils.readVector3iList("map/CaspianBorder.yml", "C_RU");
        List<Vector3i> List_C_RU_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "C_RU_Capture");
        List<Vector3i> List_D_US = FileUtils.readVector3iList("map/CaspianBorder.yml", "D_US");
        List<Vector3i> List_D_US_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "D_US_Capture");
        List<Vector3i> List_D_RU = FileUtils.readVector3iList("map/CaspianBorder.yml", "D_RU");
        List<Vector3i> List_D_RU_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "D_RU_Capture");
        List<Vector3i> List_E_US = FileUtils.readVector3iList("map/CaspianBorder.yml", "E_US");
        List<Vector3i> List_E_US_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "E_US_Capture");
        List<Vector3i> List_E_RU = FileUtils.readVector3iList("map/CaspianBorder.yml", "E_RU");
        List<Vector3i> List_E_RU_Capture = FileUtils.readVector3iList("map/CaspianBorder.yml", "E_RU_Capture");

        ConquestArea point1 = new GeneralSpawnConquestArea(area_A, "A", "加油站", true, List_A_US, List_A_US_Capture, List_A_RU, List_A_RU_Capture)
                .setHasLight()
                .setHasTank()
                .setFirstTankSpawnPoint(List_A_US_Capture)
                .setSecondTankSpawnPoint(List_A_RU_Capture)
                .setFirstLightSpawnPoint(List_A_US)
                .setSecondLightSpawnPoint(List_A_RU)
                .setFirstTankVehicleGroup(US_TANKS)
                .setSecondTankVehicleGroup(RU_TANKS)
                .setFirstLightVehicleGroup(Arrays.asList("ATV", "M1161 ITV","MRAP", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "M220 TOW", "metalstorm", "bofors", "VADS", "MIM-23", "OLD CANNON", "MT-12SM"))
                .setSecondLightVehicleGroup(Arrays.asList("ATV", "VDV Buggy","SPM-3", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "9M133", "metalstorm", "bofors", "VADS", "MIM-23", "OLD CANNON", "MT-12SM"))
                ;
        ConquestArea point2 = new GeneralSpawnConquestArea(area_B, "B", "信号塔", true, List_B_US, List_B_US_Capture, List_B_RU, List_B_RU_Capture)
                .setHasLight()
                .setFirstLightSpawnPoint(List_B_US)
                .setSecondLightSpawnPoint(List_B_RU)
                .setFirstLightVehicleGroup(Arrays.asList("ATV", "M1161 ITV","MRAP", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "M220 TOW", "metalstorm", "bofors", "VADS", "MIM-23", "OLD CANNON", "MT-12SM"))
                .setSecondLightVehicleGroup(Arrays.asList("ATV", "VDV Buggy","SPM-3", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "9M133", "metalstorm", "bofors", "VADS", "MIM-23", "OLD CANNON", "MT-12SM"))
                ;
        ConquestArea point3 = new ConquestArea(area_C, "C", "树林", true, List_C_US, List_C_US_Capture, List_C_RU, List_C_RU_Capture);
        ConquestArea point4 = new GeneralSpawnConquestArea(area_D, "D", "关卡", true, List_D_US, List_D_US_Capture, List_D_RU, List_D_RU_Capture)
                .setHasLight()
                .setHasTank()
                .setFirstTankSpawnPoint(List_D_US_Capture)
                .setSecondTankSpawnPoint(List_D_RU_Capture)
                .setFirstLightSpawnPoint(List_D_US)
                .setSecondLightSpawnPoint(List_D_RU)
                .setFirstTankVehicleGroup(US_TANKS)
                .setSecondTankVehicleGroup(RU_TANKS)
                .setFirstLightVehicleGroup(Arrays.asList("ATV", "M1161 ITV","MRAP", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "M220 TOW", "metalstorm", "bofors", "VADS", "MIM-23", "OLD CANNON", "MT-12SM"))
                .setSecondLightVehicleGroup(Arrays.asList("ATV", "VDV Buggy","SPM-3", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "9M133", "metalstorm", "bofors", "VADS", "MIM-23", "OLD CANNON", "MT-12SM"))
                ;
        ConquestArea point5 = new GeneralSpawnConquestArea(area_E, "E", "高塔", true, List_E_US, List_E_US_Capture, List_E_RU, List_E_RU_Capture)
                .setHasLight()
                .setFirstLightSpawnPoint(List_E_US)
                .setSecondLightSpawnPoint(List_E_RU)
                .setFirstLightVehicleGroup(Arrays.asList("ATV", "M1161 ITV","MRAP", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "M220 TOW", "metalstorm", "bofors", "VADS", "MIM-23", "OLD CANNON", "MT-12SM"))
                .setSecondLightVehicleGroup(Arrays.asList("ATV", "VDV Buggy","SPM-3", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "9M133", "metalstorm", "bofors", "VADS", "MIM-23", "OLD CANNON", "MT-12SM"))
                ;;
        ConquestArea point_US = new GeneralSpawnConquestArea(area_E, "HQ", "里海边境美军部署", false, US_List, US_List, US_List, US_List)
                .setHasLight()
                .setHasJet()
                .setHasAtkJet()
                .setHasTank()
                .setHasAA()
                .setHasTransHeli()
                .setHasHeli()
                .setFirstLightSpawnPoint(US_List)
                .setFirstJetSpawnPoint(US_List)
                .setFirstAtkJetSpawnPoint(US_List)
                .setFirstTankSpawnPoint(US_List)
                .setFirstAASpawnPoint(US_List)
                .setFirstTransHeliSpawnPoint(US_List)
                .setFirstHeliSpawnPoint(US_List)
                .setFirstLightVehicleGroup(Arrays.asList("ATV", "M1161 ITV","MRAP", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "D-30", "CENTURION C-RAM"))
                .setFirstJetVehicleGroup(US_JETS)
                .setFirstAtkJetVehicleGroup(US_ATKJETS)
                .setFirstTankVehicleGroup(US_TANKS)
                .setFirstAAVehicleGroup(US_AAS)
                .setFirstTransHeliVehicleGroup(US_TRANSHELIS)
                .setFirstHeliVehicleGroup(US_HELIS)
                ;
        ConquestArea point_RU = new GeneralSpawnConquestArea(area_A, "HQ", "里海边境俄国部署", false, RU_List, RU_List, RU_List, RU_List)
                .setHasLight()
                .setHasJet()
                .setHasAtkJet()
                .setHasTank()
                .setHasAA()
                .setHasTransHeli()
                .setHasHeli()
                .setSecondLightSpawnPoint(RU_List)
                .setSecondJetSpawnPoint(RU_List)
                .setSecondAtkJetSpawnPoint(RU_List)
                .setSecondTankSpawnPoint(RU_List)
                .setSecondAASpawnPoint(RU_List)
                .setSecondTransHeliSpawnPoint(RU_List)
                .setSecondHeliSpawnPoint(RU_List)
                .setSecondLightVehicleGroup(Arrays.asList("ATV", "VDV Buggy","SPM-3", "LATV4_T0", "LATV4_T1", "LATV4_T2", "LATV4_T3", "D-30", "PANTSIR-S1"))
                .setSecondJetVehicleGroup(RU_JETS)
                .setSecondAtkJetVehicleGroup(RU_ATKJETS)
                .setSecondTankVehicleGroup(RU_TANKS)
                .setSecondAAVehicleGroup(RU_AAS)
                .setSecondTransHeliVehicleGroup(RU_TRANSHELIS)
                .setSecondHeliVehicleGroup(RU_HELIS)
                ;

        point1.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point2.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point3.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point4.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point5.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point_RU.setCaptureState("RU", ConquestArea.ConquestAreaState.CAPTURED);
        point_US.setCaptureState("US", ConquestArea.ConquestAreaState.CAPTURED);

        point1.setCaptureProperty(20, 3);
        point2.setCaptureProperty(15, 1);
        point3.setCaptureProperty(15, 3);
        point4.setCaptureProperty(15, 3);
        point5.setCaptureProperty(20, 3);
        point_RU.setCaptureProperty(30, 0);
        point_US.setCaptureProperty(30, 0);

        point_US.setConquestAreaButtonPosition(250, 190, 20, 20);
        point1.setConquestAreaButtonPosition(430, 160, 20, 20);
        point2.setConquestAreaButtonPosition(390, 190, 20, 20);
        point3.setConquestAreaButtonPosition(370, 175, 20, 20);
        point4.setConquestAreaButtonPosition(340, 215, 20, 20);
        point5.setConquestAreaButtonPosition(340, 135, 20, 20);
        point_RU.setConquestAreaButtonPosition(590, 260, 20, 20);

        List<ConquestArea> pointList = new ArrayList<>(Arrays.asList(
                point_RU, point1, point2, point3, point4, point5, point_US
        ));

        CASPIANBORDER_VS.initGameSource(
                "CaspianBorder", "载具风暴", "US", "RU",
                new Vector3i(839, 2, -242),
                new Vector3i(843, 2, -242),
                new Vector3i(835, 2, -242),
                pointList);
        CASPIANBORDER_VS.setTime(1200);
        CASPIANBORDER_VS.setTicket(1000);
        CASPIANBORDER_VS.setMapName_Lang("里海边境(Caspian Border)");
        CASPIANBORDER_VS.setGameType(VEHICLE_STORM);
        CASPIANBORDER_VS.generateMenu();
        gameList_2.add(CASPIANBORDER_VS);
        gameList_3.add(CASPIANBORDER_VS);
    }
//
//    static {
//        ConquestGame PARACELSTORM_CONQUEST = new ConquestGame();
//
//        Area area_A = new CircleArea(new Vector2i(-20, -485), 30, 60, 85);
//        Area area_B = new RectangleArea3i(new Vector3i(-46, 67, -250), new Vector3i(-73, 75, -219));
//        Area area_C = new RectangleArea3i(new Vector3i(-128, 67, 77), new Vector3i(-167, 75, 128));
//        Area area_D = new RectangleArea3i(new Vector3i(65, 65, 175), new Vector3i(23, 75, 129));
//        Area area_E = new CircleArea(new Vector2i(-204, 374), 50, 40, 100);
//
//        List<Vector3i> CN_List = FileUtils.readVector3iList("map/ParacelStorm.yml", "CN");
//        List<Vector3i> US_List = FileUtils.readVector3iList("map/ParacelStorm.yml", "US");
//        List<Vector3i> List_A_US = FileUtils.readVector3iList("map/ParacelStorm.yml", "A_US");
//        List<Vector3i> List_A_US_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "A_US_Capture");
//        List<Vector3i> List_A_CN = FileUtils.readVector3iList("map/ParacelStorm.yml", "A_CN");
//        List<Vector3i> List_A_CN_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "A_CN_Capture");
//        List<Vector3i> List_B_US = FileUtils.readVector3iList("map/ParacelStorm.yml", "B_US");
//        List<Vector3i> List_B_US_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "B_US_Capture");
//        List<Vector3i> List_B_CN = FileUtils.readVector3iList("map/ParacelStorm.yml", "B_CN");
//        List<Vector3i> List_B_CN_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "B_CN_Capture");
//        List<Vector3i> List_C_US = FileUtils.readVector3iList("map/ParacelStorm.yml", "C_US");
//        List<Vector3i> List_C_US_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "C_US_Capture");
//        List<Vector3i> List_C_CN = FileUtils.readVector3iList("map/ParacelStorm.yml", "C_CN");
//        List<Vector3i> List_C_CN_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "C_CN_Capture");
//        List<Vector3i> List_D_US = FileUtils.readVector3iList("map/ParacelStorm.yml", "D_US");
//        List<Vector3i> List_D_US_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "D_US_Capture");
//        List<Vector3i> List_D_CN = FileUtils.readVector3iList("map/ParacelStorm.yml", "D_CN");
//        List<Vector3i> List_D_CN_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "D_CN_Capture");
//        List<Vector3i> List_E_US = FileUtils.readVector3iList("map/ParacelStorm.yml", "E_US");
//        List<Vector3i> List_E_US_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "E_US_Capture");
//        List<Vector3i> List_E_CN = FileUtils.readVector3iList("map/ParacelStorm.yml", "E_CN");
//        List<Vector3i> List_E_CN_Capture = FileUtils.readVector3iList("map/ParacelStorm.yml", "E_CN_Capture");
//
//        ConquestArea point_CN = new VehicleSpawnConquestArea(area_A, "HQ", "西沙风暴中国部署", false, CN_List, CN_List, CN_List, CN_List)
//                .setHasLight()
//                .setHasJet()
//                .setHasAtkJet()
//                .setHasTransHeli()
//                .setHasFac();
//        ConquestArea point1 = new ConquestArea(area_A, "A", "船坞", true, List_A_US, List_A_US_Capture, List_A_CN, List_A_CN_Capture);
//        ConquestArea point2 = new GeneralSpawnConquestArea(area_B, "B", "军营", true, List_B_US, List_B_US_Capture, List_B_CN, List_B_CN_Capture)
//                .setHasLight()
//                .setHasAA();
//        ConquestArea point3 = new ConquestArea(area_C, "C", "火力基地岛", true, List_C_US, List_C_US_Capture, List_C_CN, List_C_CN_Capture);
//        ConquestArea point4 = new ConquestArea(area_D, "D", "太阳能岛", true, List_D_US, List_D_US_Capture, List_D_CN, List_D_CN_Capture);
//        ConquestArea point5 = new ConquestArea(area_E, "E", "沉船", true, List_E_US, List_E_US_Capture, List_E_CN, List_E_CN_Capture);
//        ConquestArea point_US = new VehicleSpawnConquestArea(area_E, "HQ", "西沙风暴美军部署", false, US_List, US_List, US_List, US_List)
//                .setHasLight()
//                .setHasJet()
//                .setHasAtkJet()
//                .setHasTransHeli()
//                .setHasFac();
//
//        point1.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
//        point2.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
//        point3.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
//        point4.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
//        point5.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
//        point_CN.setCaptureState("CN", ConquestArea.ConquestAreaState.CAPTURED);
//        point_US.setCaptureState("US", ConquestArea.ConquestAreaState.CAPTURED);
//
//        point1.setCaptureProperty(30, 3);
//        point2.setCaptureProperty(30, 1);
//        point3.setCaptureProperty(30, 3);
//        point4.setCaptureProperty(30, 3);
//        point5.setCaptureProperty(30, 3);
//        point_CN.setCaptureProperty(30, 0);
//        point_US.setCaptureProperty(30, 0);
//
//        point_US.setConquestAreaButtonPosition(250, 230, 20, 20);
//        point1.setConquestAreaButtonPosition(405, 130, 20, 20);
//        point2.setConquestAreaButtonPosition(405, 175, 20, 20);
//        point3.setConquestAreaButtonPosition(385, 248, 20, 20);
//        point4.setConquestAreaButtonPosition(420, 260, 20, 20);
//        point5.setConquestAreaButtonPosition(370, 320, 20, 20);
//        point_CN.setConquestAreaButtonPosition(570, 220, 20, 20);
//
//        List<ConquestArea> pointList = new ArrayList<>(Arrays.asList(
//                point_CN, point1, point2, point3, point4, point5, point_US
//        ));
//
//        PARACELSTORM_CONQUEST.initGameSource(
//                "ParacelStorm", "征服", "US", "CN",
//                new Vector3i(-63, 1, -219),
//                new Vector3i(-63, 1, -215),
//                new Vector3i(-63, 1, -211),
//                pointList);
//        PARACELSTORM_CONQUEST.setTime(1800);
//        PARACELSTORM_CONQUEST.setTicket(1500);
//        PARACELSTORM_CONQUEST.setMapName_Lang("西沙风暴(Paracel Storm)");
//        PARACELSTORM_CONQUEST.setGameType(CONQUEST);
//        PARACELSTORM_CONQUEST.maxAi = 25;
//
//        gameList_3.add(PARACELSTORM_CONQUEST);
//        gameList_4.add(PARACELSTORM_CONQUEST);
//    }

    static {
        ConquestGame PROPAGANDA_CONQUEST = new ConquestGame();

        Area area_A = new RectangleArea3i(new Vector3i(-2573, 6, 1496), new Vector3i(-2531, 9, 1524));
        Area area_B = new RectangleArea3i(new Vector3i(-2676, 3, 1537), new Vector3i(-2701, 7, 1492));
        Area area_C = new RectangleArea3i(new Vector3i(-2569, 3, 1646), new Vector3i(-2547, 6, 1593));
        Area area_D = new RectangleArea3i(new Vector3i(-2705, 5, 1610), new Vector3i(-2673, 2, 1560));
        Area area_E = new RectangleArea3i(new Vector3i(-2582, 4, 1717), new Vector3i(-2612, 8, 1702));

        String fileName = "map/Propaganda.yml";

        List<Vector3i> CN_List = FileUtils.readVector3iList(fileName, "CN");
        List<Vector3i> US_List = FileUtils.readVector3iList(fileName, "US");
        List<Vector3i> List_A_US = FileUtils.readVector3iList(fileName, "A_US");
        List<Vector3i> List_A_US_Capture = FileUtils.readVector3iList(fileName, "A_US_Capture");
        List<Vector3i> List_A_CN = FileUtils.readVector3iList(fileName, "A_CN");
        List<Vector3i> List_A_CN_Capture = FileUtils.readVector3iList(fileName, "A_CN_Capture");
        List<Vector3i> List_B_US = FileUtils.readVector3iList(fileName, "B_US");
        List<Vector3i> List_B_US_Capture = FileUtils.readVector3iList(fileName, "B_US_Capture");
        List<Vector3i> List_B_CN = FileUtils.readVector3iList(fileName, "B_CN");
        List<Vector3i> List_B_CN_Capture = FileUtils.readVector3iList(fileName, "B_CN_Capture");
        List<Vector3i> List_C_US = FileUtils.readVector3iList(fileName, "C_US");
        List<Vector3i> List_C_US_Capture = FileUtils.readVector3iList(fileName, "C_US_Capture");
        List<Vector3i> List_C_CN = FileUtils.readVector3iList(fileName, "C_CN");
        List<Vector3i> List_C_CN_Capture = FileUtils.readVector3iList(fileName, "C_CN_Capture");
        List<Vector3i> List_D_US = FileUtils.readVector3iList(fileName, "D_US");
        List<Vector3i> List_D_US_Capture = FileUtils.readVector3iList(fileName, "D_US_Capture");
        List<Vector3i> List_D_CN = FileUtils.readVector3iList(fileName, "D_CN");
        List<Vector3i> List_D_CN_Capture = FileUtils.readVector3iList(fileName, "D_CN_Capture");
        List<Vector3i> List_E_US = FileUtils.readVector3iList(fileName, "E_US");
        List<Vector3i> List_E_US_Capture = FileUtils.readVector3iList(fileName, "E_US_Capture");
        List<Vector3i> List_E_CN = FileUtils.readVector3iList(fileName, "E_CN");
        List<Vector3i> List_E_CN_Capture = FileUtils.readVector3iList(fileName, "E_CN_Capture");


        ConquestArea point1 = new ConquestArea(area_A, "A", "雕像", true, List_A_US, List_A_US_Capture, List_A_CN, List_A_CN_Capture);
        ConquestArea point2 = new ConquestArea(area_B, "B", "学校", true, List_B_US, List_B_US_Capture, List_B_CN, List_B_CN_Capture);
        ConquestArea point3 = new ConquestArea(area_C, "C", "运动场", true, List_C_US, List_C_US_Capture, List_C_CN, List_C_CN_Capture);
        ConquestArea point4 = new ConquestArea(area_D, "D", "贫民窟", true, List_D_US, List_D_US_Capture, List_D_CN, List_D_CN_Capture);
        ConquestArea point5 = new ConquestArea(area_E, "E", "公寓", true, List_E_US, List_E_US_Capture, List_E_CN, List_E_CN_Capture);
        ConquestArea point_US = new GeneralSpawnConquestArea(area_E, "HQ", "政宣口号美军部署", false, US_List, US_List, US_List, US_List)
                .setHasLight()
                .setHasTank()
                .setFirstLightSpawnPoint(US_List)
                .setFirstTankSpawnPoint(US_List)
                .setFirstLightVehicleGroup(Arrays.asList("ATV", "D-30"))
                .setFirstTankVehicleGroup(US_TANKS);
        ConquestArea point_CN = new GeneralSpawnConquestArea(area_A, "HQ", "政宣口号中国部署", false, CN_List, CN_List, CN_List, CN_List)
                .setHasLight()
                .setHasTank()
                .setSecondLightSpawnPoint(CN_List)
                .setSecondTankSpawnPoint(CN_List)
                .setSecondLightVehicleGroup(Arrays.asList("ATV", "D-30"))
                .setSecondTankVehicleGroup(CN_TANKS);

        point1.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point2.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point3.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point4.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point5.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point_CN.setCaptureState("CN", ConquestArea.ConquestAreaState.CAPTURED);
        point_US.setCaptureState("US", ConquestArea.ConquestAreaState.CAPTURED);

        point1.setCaptureProperty(30, 3);
        point2.setCaptureProperty(20, 2);
        point3.setCaptureProperty(20, 2);
        point4.setCaptureProperty(20, 2);
        point5.setCaptureProperty(30, 3);
        point_CN.setCaptureProperty(30, 0);
        point_US.setCaptureProperty(30, 0);

        point_US.setConquestAreaButtonPosition(500, 90, 20, 20);
        point1.setConquestAreaButtonPosition(440, 145, 20, 20);
        point2.setConquestAreaButtonPosition(325, 190, 20, 20);
        point3.setConquestAreaButtonPosition(435, 245, 20, 20);
        point4.setConquestAreaButtonPosition(325, 240, 20, 20);
        point5.setConquestAreaButtonPosition(400, 320, 20, 20);
        point_CN.setConquestAreaButtonPosition(370, 365, 20, 20);

        List<ConquestArea> pointList = new ArrayList<>(Arrays.asList(
                point_CN, point1, point2, point3, point4, point5, point_US
        ));

        PROPAGANDA_CONQUEST.initGameSource(
                "Propaganda", "征服", "US", "CN",
                new Vector3i(-2505, 7, 1589),
                new Vector3i(-2505, 7, 1589),
                new Vector3i(-2505, 7, 1591),
                pointList);
        PROPAGANDA_CONQUEST.setTime(1500);
        PROPAGANDA_CONQUEST.setTicket(1500);
        PROPAGANDA_CONQUEST.setMapName_Lang("政宣口号(Propaganda)");
        PROPAGANDA_CONQUEST.setGameType(CONQUEST);

        PROPAGANDA_CONQUEST.setMaxTankNum(1);
        PROPAGANDA_CONQUEST.setMaxLightVehicleNum(2);
        PROPAGANDA_CONQUEST.maxAi = 15;
        PROPAGANDA_CONQUEST.generateMenu();
        gameList_3.add(PROPAGANDA_CONQUEST);
        gameList_4.add(PROPAGANDA_CONQUEST);
    }

    static {
        TDMGame SIEGEOFSHANGHAI_TDM = new TDMGame();
        List<Vector3i> list_cn = new ArrayList<>(Arrays.asList(
                new Vector3i(185, 18, 649), new Vector3i(201, 18, 654), new Vector3i(222, 18, 649),
                new Vector3i(231, 18, 646), new Vector3i(214, 18, 646), new Vector3i(208, 18, 645),
                new Vector3i(189, 18, 645), new Vector3i(185, 18, 644), new Vector3i(185, 18, 638),
                new Vector3i(174, 18, 640), new Vector3i(171, 18, 595), new Vector3i(189, 18, 609),
                new Vector3i(198, 18, 607), new Vector3i(230, 18, 618), new Vector3i(234, 18, 610)
        ));
        List<Vector3i> list_us = new ArrayList<>(Arrays.asList(
                new Vector3i(258, 18, 595), new Vector3i(273, 18, 595), new Vector3i(284, 18, 599),
                new Vector3i(305, 18, 603), new Vector3i(303, 18, 660), new Vector3i(307, 17, 664),
                new Vector3i(292, 18, 641), new Vector3i(301, 18, 648), new Vector3i(283, 18, 637),
                new Vector3i(296, 18, 614), new Vector3i(301, 18, 609), new Vector3i(279, 18, 609),
                new Vector3i(278, 18, 619), new Vector3i(283, 18, 630), new Vector3i(261, 18, 657)
        ));
        SIEGEOFSHANGHAI_TDM.initGameSource(
                "SiegeOfShanghaiTDM", "团队死斗", "CN", "US",
                new Vector3i(283, 101, 643),
                new Vector3i(287, 101, 643),
                new Vector3i(291, 101, 643),
                list_cn, list_us);
        SIEGEOFSHANGHAI_TDM.setTime(1200);
        SIEGEOFSHANGHAI_TDM.setTicket(100);
        SIEGEOFSHANGHAI_TDM.setMapName_Lang("上海之围(Siege Of Shanghai)");
        SIEGEOFSHANGHAI_TDM.setGameType(TDM);

        gameList_1.add(SIEGEOFSHANGHAI_TDM);
        gameList_2.add(SIEGEOFSHANGHAI_TDM);
        gameList_3.add(SIEGEOFSHANGHAI_TDM);
        gameList_4.add(SIEGEOFSHANGHAI_TDM);
    }

    static {
        TDMGame SIEGEOFSHANGHAI_SDM = new TDMGame();
        List<Vector3i> list = FileUtils.readVector3iList("map/SiegeOfShanghaiSDM.yml", "Point");
        SIEGEOFSHANGHAI_SDM.initGameSource(
                "SiegeOfShanghaiSDM", "小队死斗", "CN", "US",
                new Vector3i(205, 31, 759),
                new Vector3i(205, 31, 754),
                new Vector3i(205, 31, 749),
                list, list);
        SIEGEOFSHANGHAI_SDM.setTime(1800);
        SIEGEOFSHANGHAI_SDM.setTicket(200);
        SIEGEOFSHANGHAI_SDM.setMapName_Lang("上海之围(Siege Of Shanghai)");
        SIEGEOFSHANGHAI_SDM.setGameType(SDM);

        gameList_1.add(SIEGEOFSHANGHAI_SDM);
        gameList_2.add(SIEGEOFSHANGHAI_SDM);
        gameList_3.add(SIEGEOFSHANGHAI_SDM);
        gameList_4.add(SIEGEOFSHANGHAI_SDM);
    }

    static {
        GunMasterGame RAID_GUNMASTER = new GunMasterGame();
        List<Vector3i> us = new ArrayList<>(Arrays.asList(
                new Vector3i(-1064, 47, -1060), new Vector3i(-1064, 47, -1052), new Vector3i(-1056, 47, -1061),
                new Vector3i(-1049, 47, -1049), new Vector3i(-1040, 47, -1061), new Vector3i(-1047, 47, -1056),
                new Vector3i(-1039, 48, -1047), new Vector3i(-1042, 49, -1046), new Vector3i(-1049, 49, -1039),
                new Vector3i(-1039, 49, -1035), new Vector3i(-1033, 49, -1023), new Vector3i(-1030, 49, -1007),
                new Vector3i(-1030, 49, -1017), new Vector3i(-1038, 49, -1032), new Vector3i(-1047, 48, -1063),
                new Vector3i(-1046, 43, -1105), new Vector3i(-1045, 43, -1080), new Vector3i(-1047, 48, -1063)
        ));
        List<Vector3i> cn = new ArrayList<>(Arrays.asList(
                new Vector3i(-911, 45, -1067), new Vector3i(-916, 45, -1067), new Vector3i(-912, 45, -1066),
                new Vector3i(-929, 45, -1084), new Vector3i(-915, 45, -1046), new Vector3i(-914, 45, -1040),
                new Vector3i(-911, 45, -1036), new Vector3i(-923, 45, -1036), new Vector3i(-924, 45, -1053),
                new Vector3i(-918, 45, -1050), new Vector3i(-922, 45, -1043), new Vector3i(-930, 45, -1042),
                new Vector3i(-935, 45, -1063), new Vector3i(-924, 45, -1053), new Vector3i(-928, 45, -1064),
                new Vector3i(-925, 45, -1082), new Vector3i(-924, 45, -1053), new Vector3i(-928, 45, -1064)
        ));
        RAID_GUNMASTER.initGameSource(
                "Raid", "枪神", "US", "CN",
                new Vector3i(-963, 33, -1055),
                new Vector3i(-972, 33, -1052),
                new Vector3i(-955, 33, -1052),
                us, cn);
        RAID_GUNMASTER.setTime(1200);
        RAID_GUNMASTER.setTicket(100);
        RAID_GUNMASTER.setMapName_Lang("山景别墅(Raid)");
        RAID_GUNMASTER.setGameType(GUNMASTER);
        gameList_2.add(RAID_GUNMASTER);
    }

    static {
        TDMGame CASPIANBORDER_TDM = new TDMGame();
        List<Vector3i> list_us = new ArrayList<>(Arrays.asList(
                new Vector3i(1104, 6, 7), new Vector3i(1124, 5, -11), new Vector3i(1098, 5, -28),
                new Vector3i(1100, 5, -7), new Vector3i(1131, 5, -1), new Vector3i(1124, 6, -18),
                new Vector3i(1097, 5, 25), new Vector3i(1106, 5, 55), new Vector3i(1109, 5, 60),
                new Vector3i(1117, 5, 95), new Vector3i(1122, 5, 81), new Vector3i(1131, 5, 52),
                new Vector3i(1122, 5, 65), new Vector3i(1103, 5, 60), new Vector3i(1139, 33, 17)
        ));
        List<Vector3i> list_ru = new ArrayList<>(Arrays.asList(
                new Vector3i(1203, 5, 98), new Vector3i(1204, 5, 91), new Vector3i(1202, 5, 86),
                new Vector3i(1189, 5, 94), new Vector3i(1205, 5, 52), new Vector3i(1183, 5, 52),
                new Vector3i(1210, 5, 55), new Vector3i(1225, 8, 74), new Vector3i(1231, 6, 16),
                new Vector3i(1245, 5, -13), new Vector3i(1243, 5, -23), new Vector3i(1214, 5, 13),
                new Vector3i(1210, 5, 5), new Vector3i(1178, 5, 4), new Vector3i(1196, 6, -18)
        ));
        CASPIANBORDER_TDM.initGameSource(
                "CaspianBorderTDM", "团队死斗", "US", "RU",
                new Vector3i(1160, 143, 40),
                new Vector3i(1160, 143, 36),
                new Vector3i(1160, 143, 44),
                list_us, list_ru);
        CASPIANBORDER_TDM.setTime(1200);
        //1015 -49 / 1342 116
        CASPIANBORDER_TDM.setTicket(100);
        CASPIANBORDER_TDM.setMapName_Lang("里海边境(Caspian Border)");
        CASPIANBORDER_TDM.setGameType(TDM);
        CASPIANBORDER_TDM.maxAi = 6;
        gameList_2.add(CASPIANBORDER_TDM);
        gameList_3.add(CASPIANBORDER_TDM);
        gameList_4.add(CASPIANBORDER_TDM);
    }

    static {
        TDMGame ZIBATOWER_TDM = new TDMGame();
        String fileName = "map/ZibaTower.yml";
        List<Vector3i> list = FileUtils.readVector3iList(fileName, "ZibaTower");
        ZIBATOWER_TDM.initGameSource(
                "ZibaTower", "团队死斗", "US", "RU",
                new Vector3i(25, 60, -2111),
                new Vector3i(27, 60, -2111),
                new Vector3i(23, 60, -2111),
                list, list);
        ZIBATOWER_TDM.setTime(1200);
        ZIBATOWER_TDM.setTicket(100);
        ZIBATOWER_TDM.setMapName_Lang("史巴塔(Ziba Tower)");
        ZIBATOWER_TDM.setGameType(TDM);
        ZIBATOWER_TDM.maxAi = 6;
        gameList_2.add(ZIBATOWER_TDM);
        gameList_3.add(ZIBATOWER_TDM);
    }

//    static {
//        GunMasterGame ZIBATOWER_GUNMASTER = new GunMasterGame();
//        String fileName = "map/ZibaTower.yml";
//        List<Vector3i> list = FileUtils.readVector3iList(fileName, "ZibaTower");
//        ZIBATOWER_GUNMASTER.initGameSource(
//                "ZibaTower", "枪神", "US", "RU",
//                new Vector3i(25, 60, -2111),
//                new Vector3i(27, 60, -2111),
//                new Vector3i(23, 60, -2111),
//                list, list);
//        ZIBATOWER_GUNMASTER.setTime(1200);
//        ZIBATOWER_GUNMASTER.setTicket(100);
//        ZIBATOWER_GUNMASTER.setMapName_Lang("史巴塔(Ziba Tower)");
//        ZIBATOWER_GUNMASTER.setGameType(GUNMASTER);
//        gameList_1.add(ZIBATOWER_GUNMASTER);
//        gameList_2.add(ZIBATOWER_GUNMASTER);
//    }

    static {
        GunMasterGame SIEGEOFSHANGHAI_GUNMASTER = new GunMasterGame();
        List<Vector3i> list_cn = FileUtils.readVector3iList("map/SiegeOfShanghaiTDM2.yml", "Point");
        List<Vector3i> list_us = FileUtils.readVector3iList("map/SiegeOfShanghaiTDM2.yml", "Point");
        SIEGEOFSHANGHAI_GUNMASTER.initGameSource(
                "SiegeOfShanghaiTDM2", "枪神", "CN", "US",
                new Vector3i(205, 31, 759),
                new Vector3i(205, 31, 754),
                new Vector3i(205, 31, 749),
                list_cn, list_us);
        SIEGEOFSHANGHAI_GUNMASTER.setTime(1200);
        SIEGEOFSHANGHAI_GUNMASTER.setTicket(100);
        SIEGEOFSHANGHAI_GUNMASTER.setMapName_Lang("上海之围2(Siege Of Shanghai 2)");
        SIEGEOFSHANGHAI_GUNMASTER.setGameType(GUNMASTER);

        gameList_1.add(SIEGEOFSHANGHAI_GUNMASTER);
        gameList_2.add(SIEGEOFSHANGHAI_GUNMASTER);
    }

    static {
        ConquestGame SHIP_CONQUEST = new ConquestGame();

        Area area_A = new RectangleArea3i(new Vector3i(43, 75, -2478), new Vector3i(3, 90, -2521));
        Area area_B = new RectangleArea3i(new Vector3i(-45, 75, -2521), new Vector3i(-8, 90, -2478));
        Area area_C = new RectangleArea3i(new Vector3i(-55, 75, -2478), new Vector3i(-95, 90, -2521));

        List<Vector3i> CN_List = FileUtils.readVector3iList("map/CruiseShip.yml", "CN");
        List<Vector3i> RU_List = FileUtils.readVector3iList("map/CruiseShip.yml", "RU");
        List<Vector3i> List_A = FileUtils.readVector3iList("map/CruiseShip.yml", "A");
        List<Vector3i> List_B = FileUtils.readVector3iList("map/CruiseShip.yml", "B");
        List<Vector3i> List_C = FileUtils.readVector3iList("map/CruiseShip.yml", "C");

        ConquestArea point_RU = new ConquestArea(area_C, "HQ", "运输船俄国部署", false, RU_List, RU_List, RU_List, RU_List);
        ConquestArea point1 = new ConquestArea(area_A, "A", "运输船头部", true, List_A, List_A, List_A, List_A);
        ConquestArea point2 = new ConquestArea(area_B, "B", "运输船中部", true, List_B, List_B, List_B, List_B);
        ConquestArea point3 = new ConquestArea(area_C, "C", "运输船尾部", true, List_C, List_C, List_C, List_C);
        ConquestArea point_CN = new ConquestArea(area_A, "HQ", "运输船中国部署", false, CN_List, CN_List, CN_List, CN_List);

        point1.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point2.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point3.setCaptureState("NEUTRALIZED", ConquestArea.ConquestAreaState.NEUTRALIZED);
        point_CN.setCaptureState("CN", ConquestArea.ConquestAreaState.CAPTURED);
        point_RU.setCaptureState("RU", ConquestArea.ConquestAreaState.CAPTURED);

        point1.setCaptureProperty(15, 3);
        point2.setCaptureProperty(15, 2);
        point3.setCaptureProperty(15, 3);
        point_CN.setCaptureProperty(20, 0);
        point_RU.setCaptureProperty(20, 0);

        point1.setConquestAreaButtonPosition(410, 130, 20, 20);
        point2.setConquestAreaButtonPosition(410, 220, 20, 20);
        point3.setConquestAreaButtonPosition(410, 290, 20, 20);
        point_CN.setConquestAreaButtonPosition(410, 340, 20, 20);
        point_RU.setConquestAreaButtonPosition(410, 80, 20, 20);

        List<ConquestArea> pointList = new ArrayList<>(Arrays.asList(
                point_CN, point1, point2, point3, point_RU
        ));

        SHIP_CONQUEST.initGameSource(
                "CruiseShip", "征服", "RU", "CN",
                new Vector3i(-60, 60, -2509),
                new Vector3i(-60, 60, -2513),
                new Vector3i(-60, 60, -2504),
                pointList);
        SHIP_CONQUEST.setTime(1800);
        SHIP_CONQUEST.setTicket(1000);
        SHIP_CONQUEST.setMapName_Lang("运输船(Cruise Ship)");
        SHIP_CONQUEST.setGameType(CONQUEST);
        SHIP_CONQUEST.maxAi = 9;
        gameList_1.add(SHIP_CONQUEST);
        gameList_2.add(SHIP_CONQUEST);
        gameList_3.add(SHIP_CONQUEST);
        gameList_4.add(SHIP_CONQUEST);
    }

     */
}
